<?php

/**
 * Green Calc
 * Calc Form View for Green Calc Component
 * 2009-2014 All rights reserved
 * @link http://www.greenkey.ru
 * @license GNU/GPL v3
 */

// No direct access
defined('_JEXEC') or die('Restricted access');

// Подключаем библиотеку представления Joomla.
jimport('joomla.application.component.view');

/**
 * Calc View
 *
 */
class CalcViewCalc extends JViewLegacy {

    /**
     * Редактируемое сообщение
     * @var object 
     */
    protected $item;

    /**
     * Переменные
     */
    protected $calc_vars;
    
    /**
     * Объект формы
     * @var array
     */
    protected $form;

    /**
     * JavaScript файл валидации формы.
     * @var  string
     */
    protected $script;

    /**
     * Доступы пользователя.
     *
     * @var  object
     */
    protected $canDo;

    /**
     * display method of Calc view
     * @return void
     * */
    function display($tpl = null) {
        try {

            // Получаем данные из модели.
            $this->form = $this->get('Form');
            $this->item = $this->get('Item');
            $this->calc_vars = $this->get('Vars');
            $this->script = $this->get('Script');

            // Получаем доступы пользователя.
            $this->canDo = CalcHelper::getActions($this->item->id);

            // Устанавливаем панель инструментов.
            $this->addToolBar();

            // Отображаем
            parent::display($tpl);

            // Устанавливаем документ.
            $this->setDocument();
        } catch (Exception $ex) {
            //throw new Exception($e->getMessage());
            JFactory::getApplication()->enqueueMessage(JText::_('COM_CALC_ERROR_OCCURRED'), 'error');
            JLog::add($e->getMessage(), JLog::ERROR, 'com_calc');
        }
    }

    /**
     * Устанавливает панель инструментов.
     *
     * @return  void
     */
    protected function addToolBar() {

        // Скрытие основного меню админки
        JFactory::getApplication()->input->set('hidemainmenu', true);

        $isNew = ($this->item->id == 0);

        JToolBarHelper::title($isNew ? JText::_('COM_CALC_MANAGER_CALC_NEW') : JText::_('COM_CALC_MANAGER_CALC_EDIT'), '20-calc');

        // Устанавливаем действия для новых и существующих записей.
        if ($isNew) {
            
            // Для новых записей проверяем право создания.
            if ($this->canDo->get('core.create')) {
                JToolBarHelper::apply('calc.apply', 'JTOOLBAR_APPLY');
                JToolBarHelper::save('calc.save', 'JTOOLBAR_SAVE');
                JToolBarHelper::custom('calc.save2new', 'save-new.png', 'save-new_f2.png', 'JTOOLBAR_SAVE_AND_NEW', false
                );
            }
            JToolBarHelper::cancel('calc.cancel', 'JTOOLBAR_CANCEL');
            
        } else {
            
            // Для существующих записей проверяем право редактирования.
            if ($this->canDo->get('core.edit')) {
                // Мы можем сохранять новую запись.
                JToolBarHelper::apply('calc.apply', 'JTOOLBAR_APPLY');
                JToolBarHelper::save('calc.save', 'JTOOLBAR_SAVE');

                // Мы можем сохранять  в новую запись, но нужна проверка на создание.
                if ($this->canDo->get('core.create')) {
                    JToolBarHelper::custom('calc.save2new', 'save-new.png', 'save-new_f2.png', 'JTOOLBAR_SAVE_AND_NEW', false);
                }
            }

            // Для сохранения копии записи проверяем право создания.
            if ($this->canDo->get('core.create')) {
                JToolBarHelper::custom('calcworld.save2copy', 'save-copy.png', 'save-copy_f2.png', 'JTOOLBAR_SAVE_AS_COPY', false
                );
            }

            JToolBarHelper::cancel('calc.cancel', $isNew ? 'JTOOLBAR_CANCEL' : 'JTOOLBAR_CLOSE');
        }


        //JToolBarHelper::apply('calc.apply', 'JTOOLBAR_APPLY');
        //JToolBarHelper::save('calc.save');
        //JToolBarHelper::cancel('calc.cancel', $isNew ? 'JTOOLBAR_CANCEL' : 'JTOOLBAR_CLOSE');
    }

    /**
     * Метод для установки свойств документа.
     *
     * @return  void
     */
    protected function setDocument() {
        $document = JFactory::getDocument();
        $document->addScript(JURI::root() . $this->script);
        // not need in Joomla 3
        /*$document->addScript(
                JURI::root() . "administrator/components/com_calc/views/calc/submitbutton.js");
        JText::script('COM_CALC_CALC_ERROR_UNACCEPTABLE');*/
    }

}
